草庐IT

带指针的 C++ vector

全部标签

c++ - 静态 vector 的大小

我在成员函数中使用静态vector并将值推回该vector;但三个函数调用的vector大小仅为1。我不确定如何为此制作MVCE,因为在MVCE中它对我来说也工作正常,所以问题显然是代码的其他部分。我只是想知道或想知道在什么情况下我的静态vector会给我这样的结果。classX{//...};templatevoidtest(Ta){std::coutvec;std::lock_guardlock(mx);//DoingsomethingelsewithTXobj;vec.push_back(obj);std::cout过来的输出是Functioncallednoofelements

c++ - 在 C++ lambda 函数中传递 >1 个 vector 的方法

我想从2个vectors和v中计算s[i]*v[i]的最大值。我想知道是否有一种以类似形式使用lambda函数的方法:min(s.begin(),s.end(),[](){})也可以包含v.begin()和v.end()? 最佳答案 试试这个:#include#include#include#includeintmax=std::inner_product(s.begin(),s.end(),v.begin(),std::numeric_limits::min(),static_cast(std::max),std::multipl

C++:将指针设置为 nullptr 与将其初始化为新变量类型之间的区别

我正在学习C++,我知道“new”关键字用于将内存中的地址分配给指针。而且我认为在使用“nullptr”时会初始化一个指向任何内容的指针。那是对的吗?引用示例://usingnullptrint*x=nullptr;//thisisjustapointerthatpointstonothingand//willneedtobeinitializedwithanaddressbeforeit//itcanbeused.Correct?//usingnewint*x=newint;//thisisbasicallygivingxanaddressinmemory.Willthe//addr

c++ - C 样式转换和 C++ static_cast 到指针的引用

这不是C++11我对微软的第三个参数感兴趣CMapStringToOb::GetNextAssoc,其定义如下:voidGetNextAssoc(POSITION&rNextPosition,CString&rKey,CObject*&rValue)const;然后我得到了以下用于测试的简单代码:两个好的案例和一个编译器错误的案例。classCMyObject:publicCObject//inordertouseCMapStringToOb{public:CMyObject(CStringname_):name(name_){}voidSayHello(){TRACE(_T("hel

c++ - 双指针 vs 通过引用指针传递

这个问题在这里已经有了答案:Whentousereferencesvs.pointers(17个答案)AretherebenefitsofpassingbypointeroverpassingbyreferenceinC++?(7个答案)关闭6年前。虽然理解了双指针的概念和应该在哪里使用它,但我有一个疑问。我试验了这段代码,发现我也可以使用通过引用传递指针而不是双指针。#includeusingnamespacestd;voidmodify_by_value(int*);voidmodify_by_refrence(int*&);inta=4,b=5;voidmain(){int*pt

c++ - Nested loop of same vector - Erase–remove 成语

我想迭代vector的所有元素,并为每个元素检查vector的所有其他元素的条件。逻辑:Precondition:qisnotinvectorforeveryx,yinvectorifd(x,y)一种方法:for(vector::iteratorit=candidates.begin();it!=candidates.end();++it){for(vector::iteratorit2=candidates.begin();it2!=candidates.end();++it2){if(dist.transformed_distance(*it,*it2)我知道如果我在循环中删除一个

c++ - 自定义分配器如何知道指针是否指向数组?

我可能误解了有关分配器的一些概念。但是我真的不知道为什么我们需要传递一个std::size_t的参数给allocate来指示要分配的对象的数量。参数是否用于分配内存区域,如数组或vector?如果它们是,那么我的自定义分配器如何知道先前返回的指针是指向一个区域还是指向一个对象?我的分配器是否负责记录这些指针?如果他们不是,那我们为什么需要那个参数? 最佳答案 allocator_traits>::allocate预期为T类型的连续N个对象序列分配内存.N由size_t提供参数。Iftheyare,thenhowcanmycustom

c++ - Visual Studio 2015:std::vector 的可视化不在调试中显示信息

我安装了visualstudio2015的新更新,现在版本14.0.25424.00和更新3。安装更新后,调试时std::vectors的可视化发生了变化。通常当我调试程序时,我可以看到std::vector的大小和项目。更新后我只能看到std::vector的原始View。这是我用于此示例的代码:intmain(){inta=1;std::vectorvecOfInt;vecOfInt.push_back(1);vecOfInt.push_back(2);vecOfInt.push_back(3);return0;}我认为可能在更新期间visualstudio中的某些设置发生了变化,

C++函数指针返回类型

给出的是以下类(只是标题):classExample{public:templateExample(bool(C::*callbackFunc)(Foo&)=nullptr):callbackFunc(callbackFunc);template???getCallbackFunc()const{returncallbackFunc;}private://storethefuncptrtemplatebool(C::*callbackFunc)(Foo&);};gettergetCallbackFunc()的正确返回类型是什么? 最佳答案

c++ - 如何防止将空指针转换为引用

在我的应用程序中,我有一个代表“系统”的单例。这个对象首先创建最后销毁,所有其他对象都应该由它管理,这意味着,每个对象将直接或间接地由这个system对象创建(在其run方法)并且所有对象都将(希望)在系统变得不可用之前被删除。问题是对system对象的可选访问(通过指针)引入了大量非空检查代码。我知道取消引用空指针会导致未定义的行为。使用旧的C-assert是我能做的最好的吗?//thisismostlypseudo-code,butshouldcompileif//thereisanappropriateMySysheader#include"MySys.h"classMySysI